package com.lyd.collections.stream;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @Author:lyd
 **/
public class StreamPrac1 {
    public static void main(String[] args) {
        ArrayList<Integer> intList = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            intList.add(i);
        }
        //1、从给定的集合中过滤奇数，保留偶数
        List<Integer> newList = intList.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
        System.out.println(newList);

        /**
         * 创建一个集合，并添加一下字符串，前面是姓名，后面是年龄
         * 张三，23
         * 李四，67，
         * 王五，56
         * 保留年纪大于23的人，并将结果收集到map集合中，姓名为键，年纪为值
         */
        ArrayList<String> strList = new ArrayList<>();
        Collections.addAll(strList, "张三,23", "李四,67", "王五,56");
        Map<String, Integer> map = strList.stream()
                .filter(str -> Integer.parseInt(str.split(",")[1]) >= 24)
                .collect(Collectors.toMap(s1 -> s1.split(",")[0], s2 -> Integer.parseInt(s2.split(",")[1])));
        System.out.println(map);

        /**
         * 现在有两个ArrayList集合，
         * 第一个集合中:存储6名男演员的名字和年龄。第二个集合中:存储6名女演员的名字和年龄姓名和年龄中间用逗号隔开。
         * 比如:张三,23
         * 要求完成如下的操作:
         * 1，男演员只要名字为3个字的前两人
         * 2，女演员只要姓杨的，并且不要第一个
         * 3，把过滤后的男演员姓名和女演员姓名合并到一起
         * 4，将上一步的演员信息封装成Actor对象。
         * 5，将所有的演员对象都保存到List集合中。
         * 备注:演员类Actor，属性只有一个: name, age
         */
        ArrayList<String> manList = new ArrayList<>();
        ArrayList<String> womanList = new ArrayList<>();
        Collections.addAll(manList, "刘备1,23", "黄忠1,48", "关羽1,28", "张飞,53", "曹操,33", "孙权1,13");
        Collections.addAll(womanList, "杨尚香,18", "貂蝉,18", "小桥,18", "公孙离,18", "蔡文姬,18", "杨玉环,18");
        //男演员只要名字为3个字的前两人
        List<String> newManList = manList.stream()
                .filter(str -> str.split(",")[0].length() == 3).limit(2)
                .collect(Collectors.toList());
        //女演员只要姓杨的，并且不要第一个
        List<String> newWomanList = womanList.stream()
                .filter(str -> str.split(",")[0].startsWith("杨")).skip(1)
                .collect(Collectors.toList());
        List<Actor> actors = Stream.concat(newManList.stream(), newWomanList.stream())
                .map(str -> new Actor(str.split(",")[0], Integer.parseInt(str.split(",")[1])))
                .collect(Collectors.toList());
        System.out.println(actors);

    }
}
